#### 9.23.2 Syntax

This syntax for the Motorola 680x0 was developed at mit.

The 680x0 version of `as` uses instructions names and syntax compatible with the Sun assembler. Intervening periods are ignored; for example, ``movl`' is equivalent to ``mov.l`'.

In the following table apc stands for any of the address registers (``%a0`' through ``%a7`'), the program counter (``%pc`'), the zero-address relative to the program counter (``%zpc`'), a suppressed address register (``%za0`' through ``%za7`'), or it may be omitted entirely. The use of size means one of ``w`' or ``l`', and it may be omitted, along with the leading colon, unless a scale is also specified. The use of scale means one of ``1`', ``2`', ``4`', or ``8`', and it may always be omitted along with the leading colon.

The following addressing modes are understood:

Immediate
  ``#number`'
Data Register
  ``%d0`' through ``%d7`'
Address Register
  ``%a0`' through ``%a7`'
  ``%a7`' is also known as ``%sp`', i.e., the Stack Pointer. `%a6` is also known as ``%fp`', the Frame Pointer.
Address Register Indirect
  ``%a0@`' through ``%a7@`'
Address Register Postincrement
  ``%a0@+`' through ``%a7@+`'
Address Register Predecrement
  ``%a0@-`' through ``%a7@-`'
Indirect Plus Offset
  ``apc@(number)`'
Index
  ``apc@(number,register:size:scale)`'

  The number may be omitted.

Postindex
  ``apc@(number)@(onumber,register:size:scale)`'

  The onumber or the register, but not both, may be omitted.

Preindex
  ``apc@(number,register:size:scale)@(onumber)`'

  The number may be omitted. Omitting the register produces the Postindex addressing mode.

Absolute
  ``symbol`', or ``digits`', optionally followed by ``:b`', ``:w`', or ``:l`'.